Dynamic over-provisioning of space in a log-structured file system

ABSTRACT

The present disclosure is related to methods, systems, and machine-readable media for log-structured file system management operations. An aggregate amount of over-provisioned computing resources assigned to a plurality of log-structured file system (LFS) objects that are allocated for performance of memory management operations associated with a virtual storage area network (vSAN) can be determined. A subset of LFS objects that are candidates for performance of a particular memory management operation based on an amount of over-provisioned computing resources consumed by one or more LFS objects among the plurality of LFS objects exceeding a resource consumption threshold associated with the determined amount of over-provisioned computing resources assigned to the plurality of LFS objects can be selected. The particular memory management operation using one or more of the candidate LFS objects can be performed.

BACKGROUND

A data center is a facility that houses servers, data storage devices,and/or other associated components such as backup power supplies,redundant data communications connections, environmental controls suchas air conditioning and/or fire suppression, and/or various securitysystems. A data center may be maintained by an information technology(IT) service provider. An enterprise may purchase data storage and/ordata processing services from the provider in order to run applicationsthat handle the enterprises' core business and operational data. Theapplications may be proprietary and used exclusively by the enterpriseor made available through a network for anyone to access and use.

Virtual computing instances (VCIs) have been introduced to lower datacenter capital investment in facilities and operational expenses andreduce energy consumption. A VCI is a software implementation of acomputer that executes application software analogously to a physicalcomputer. VCIs have the advantage of not being bound to physicalresources, which allows VCIs to be moved around and scaled to meetchanging demands of an enterprise without affecting the use of theenterprise's applications. In a software defined data center, storageresources may be allocated to VCIs in various ways, such as throughnetwork attached storage (NAS), a storage area network (SAN) such asfiber channel and/or Internet small computer system interface (i SCSI),and/or raw device mappings, among others.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram of a host and a system for log-structured filesystem memory management operations according to one or more embodimentsof the present disclosure.

FIGS. 2A-2C are diagrams illustrating altering an amount ofover-provisioned space in a log-structured file system according to oneor more embodiments of the present disclosure.

FIG. 3 is a diagram of a system for log-structured file system memorymanagement operations according to one or more embodiments of thepresent disclosure.

FIG. 4 is a diagram of a machine for log-structured file system memorymanagement operations according to one or more embodiments of thepresent disclosure.

FIG. 5 is a flow diagram corresponding to a method for log-structuredfile system memory management operations according to one or moreembodiments of the present disclosure.

DETAILED DESCRIPTION

The term “virtual computing instance” (VCI) refers generally to anisolated user space instance, which can be executed within a virtualizedenvironment. Other technologies aside from hardware virtualization canprovide isolated user space instances, also referred to as data computenodes. Data compute nodes may include non-virtualized physical hosts,VCIs, containers that run on top of a host operating system without ahypervisor or separate operating system, and/or hypervisor kernelnetwork interface modules, among others. Hypervisor kernel networkinterface modules are non-VCI data compute nodes that include a networkstack with a hypervisor kernel network interface and receive/transmitthreads.

VCIs, in some embodiments, operate with their own guest operatingsystems on a host using resources of the host virtualized byvirtualization software (e.g., a hypervisor, virtual machine monitor,etc.). The tenant (i.e., the owner of the VCI) can choose whichapplications to operate on top of the guest operating system. Somecontainers, on the other hand, are constructs that run on top of a hostoperating system without the need for a hypervisor or separate guestoperating system. The host operating system can use name spaces toisolate the containers from each other and therefore can provideoperating-system level segregation of the different groups ofapplications that operate within different containers. This segregationis akin to the VCI segregation that may be offered inhypervisor-virtualized environments that virtualize system hardware, andthus can be viewed as a form of virtualization that isolates differentgroups of applications that operate in different containers. Suchcontainers may be more lightweight than VCIs.

While the specification refers generally to VCIs, the examples givencould be any type of data compute node, including physical hosts, VCIs,non-VCI containers, and hypervisor kernel network interface modules.Embodiments of the present disclosure can include combinations ofdifferent types of data compute nodes.

As used herein with respect to VCIs, a “disk” is a representation ofmemory resources (e.g., memory resources 110 illustrated in FIG. 1) thatare used by a VCI. As used herein, “memory resource” includes primarystorage (e.g., cache memory, registers, and/or main memory such asrandom access memory (RAM)) and secondary or other storage (e.g., massstorage such as hard drives, solid state drives, NVMe devices,Persistent Memory, removable media, etc., which may include non-volatilememory). The term “disk” does not imply a single physical memory device.Rather, “disk” implies a portion of memory resources that are being usedby a VCI, regardless of how many physical devices provide the memoryresources.

Certain file systems, such as a log-structured file system (LFS), canutilize over-provisioned space to allow for performance of memorymanagement operations (e.g., garbage collection operations, segmentcleaning operations, or other operations in which data is migrated fromone portion of a memory resource to another to free up memory resourceswithin a computing system). As used herein, the term “file system”generally refers to an organizational structure utilized by a computingsystem to control storage and retrieval of data associated with thecomputing system. Further, as used herein, the term “over-provisionedspace” (and similar derivatives) generally refers to an amount ofcomputing resources (e.g., physical computing resources, such as memoryresources and/or storage resources) that can be reserved for performanceof certain computing operations, such as memory management operations.In such contexts, the term “space” can refer to an amount of physicalmemory and/or storage resources (e.g., memory segments, storagelocations, memory blocks, etc.) available to a computing system or host,such as a software defined data center.

Further, as used herein, the term “memory management operations” (andsimilar derivatives) generally refers to system-level computingoperations that are performed in the course of operation of a computingsystem or host, such as a software defined data center to maintainand/or improve the functioning of the computing system or host (incontrast to user operations, for example). Non-limiting examples of“memory management operations” include both background and foregroundoperations such as garbage collection, segment cleaning, errorcorrection, and the like.

The amount of over-provisioned space utilized can be dependent onworkloads processed by data compute nodes in a distributed computingarchitecture. In general, write-heavy workloads can utilize a largeramount of over-provisioned space while workloads with less writes canutilize a smaller amount of over-provisioned space. In addition, writepattern locality can affect an amount of over-provisioned space utilizedby the file system. For example, if a write pattern exhibits poorlocality, more over-provisioned space is needed. As used herein, theterm “locality” refers to a relative dispersion of file system writeswithin physical memory resources of a computing system. For example, ifthe write pattern is characterized by frequent, relatively small, and/ornon-consecutive writes that have not been written in the near past, thewrite pattern can be said to exhibit a relatively poor locality.Conversely, if the write pattern is characterized by infrequent, large,and/or consecutive writes, or data has been recently written are writtenagain, the write pattern can be said to exhibit a relatively goodlocality. In some embodiments, an amount of over-provisioned spaceutilized by the file system can increase in response to write patternsthat exhibit poor locality in comparison to an amount ofover-provisioned space utilized for write patterns that exhibit goodlocality.

In some approaches, a predetermined amount of space may be reserved(e.g., over-provisioned) for performance of memory managementoperations, such as garbage collection and/or segment cleaning. As anexample, some approaches that utilize LFS in a flash translation layerof a data compute node can over-provision around 7% of the availablestorage within the flash translation layer to account for variousmanagement operations. Such approaches can further reserve an additional7% in the overall computing cluster capacity to account for variousmemory management operations. However, within the virtual storage areanetwork (vSAN) control path, around 7% of the available storage spacecan be reserved for such memory management operations. This can lead toscenarios in which around 7% of the available storage space to the vSANlayer can be reserved once (e.g., on initiation of the cluster) to beallocated to each node in the cluster such that, at the vSAN layer, eachnode has around 7% over-provisioned space reserved for memory managementoperations.

However, because DOM can operate on a per-object level and a vSAN caninclude thousands or more objects that can exhibit differing writepatterns, some approaches can lead to scenarios in which theover-provisioned space is either too great (thereby reducing availableresources unnecessarily) or too small (thereby hampering efficientperformance of read/write operations). In order to mitigate the effectsof over-provisioning too many or too few resources for memory managementoperations, embodiments described herein can allow for theover-provisioned space to be shared between objects that are associatedwith data compute nodes of a distributed computing architecture suchthat the overhead (e.g., the segment cleaning overhead) corresponding toperformance of memory management operations is as low as possible evenif, for some infrequently written objects, the overhead corresponding toperformance of the memory management operations is increased.

In an illustrative and non-limiting example, multiple objects (e.g., LFSobjects) having a same size (e.g., 100 GB for each object) can beassociated with a vSAN. Some of the objects (“Obj 1” in this example)can be characterized by large writes and/or contiguous writes whileother objects (“Obj 2” in this example) can be characterized by smalland/or random writes. In this example, for each write of Obj 1, 0.01additional writes can be used for read/write operations. However, foreach write of Obj 2, three additional writes can be used for read/writeoperations. Based solely on this, it may seem reasonable to allocatemore over-provisioned space to Obj 2 than to Obj 1 due to the largerquantity of additional writes associated with performing memorymanagement operations corresponding to writes associated with Obj 2, andsome approaches do, in fact, rely on over-provisioning additionalresources to objects that have characteristics similar to Obj 2.

Such simplistic approaches, however, fail to account for differinginput/output (I/O) loads that can be associated with objects that havecharacteristics similar to the above described Obj 1 and Obj 2.Continuing with the above example, if Obj 1 is involved in 1,000,000writes per minute and Obj 2 is involved in 100 writes per minute, anadditional 10,000 writes can be used for read/write operationsassociated with Obj 1 while only 300 additional writes can be used forread/write operations associated with Obj 2. It is therefore anobjective of the present disclosure to reduce the overall overheadallocated for performance of read/write operations by accounting for I/Oloads associated with writes of objects that exhibit particularcharacteristics (e.g., object size, frequency of writes, contiguouswrites vs. non-contiguous writes, etc.).

Accordingly, by utilizing adaptive memory management operation (e.g., anadaptive garbage collection and/or an adaptive segment cleaning)methodologies, embodiments described herein can achieve reduced overalloverhead consumption in comparison to approaches in which static amountsof resources are over-provisioned. For example, by sharing theover-provisioned space between all objects associated with data computenodes, and thereby allowing each object to essentially compete withother objects for over-provisioned space, embodiments described hereincan reduce, for example, the overall segment cleaning overhead utilizedby a data compute node in comparison to approaches in whichpredetermined amounts of resources are over-provisioned for memorymanagement operations.

The figures herein follow a numbering convention in which the firstdigit or digits correspond to the drawing figure number and theremaining digits identify an element or component in the drawing.Similar elements or components between different figures may beidentified by the use of similar digits. For example, 114 may referenceelement “14” in FIG. 1, and a similar element may be referenced as 314in FIG. 3. As will be appreciated, elements shown in the variousembodiments herein can be added, exchanged, and/or eliminated so as toprovide a number of additional embodiments of the present disclosure. Inaddition, as will be appreciated, the proportion and the relative scaleof the elements provided in the figures are intended to illustratecertain embodiments of the present invention and should not be taken ina limiting sense.

FIG. 1 is a diagram of a host and a system for log-structured filesystem memory management operations according to one or more embodimentsof the present disclosure. The system can include a cluster 102 incommunication with a log-structured file system (LFS) managementoperation controller 114. The cluster 102 can include a first host 104-1with processing resources 110-1 (e.g., a number of processors), memoryresources 112-1, and/or a network interface 116-1. Similarly, thecluster 102 can include a second host 104-2 with processing resources110-2, memory resources 112-2, and/or a network interface 116-2. Thoughtwo hosts are shown in FIG. 1 for purposes of illustration, embodimentsof the present disclosure are not limited to a particular number ofhosts. For purposes of clarity, the first host 104-1 and/or the secondhost 104-2 (and/or additional hosts not illustrated in FIG. 1) may begenerally referred to as “host 104.” Similarly, reference is made to“hypervisor 106,” “VCI 108,” “processing resources 110,” memoryresources 112,” and “network interface 116,” and such usage is not to betaken in a limiting sense.

The host 104 can be included in a software defined data center. Asoftware defined data center can extend virtualization concepts such asabstraction, pooling, and automation to data center resources andservices to provide information technology as a service (ITaaS). In asoftware defined data center, infrastructure, such as networking,processing, and security, can be virtualized and delivered as a service.A software defined data center can include software defined networkingand/or software defined storage. In some embodiments, components of asoftware defined data center can be provisioned, operated, and/ormanaged through an application programming interface (API).

The host 104-1 can incorporate a hypervisor 106-1 that can execute anumber of VCIs 108-1, 108-2, . . . , 108-N (referred to generally hereinas “VCIs 108”). Likewise, the host 104-2 can incorporate a hypervisor106-2 that can execute a number of VCIs 108. The hypervisor 106-1 andthe hypervisor 106-2 are referred to generally herein as a hypervisor106. The VCIs 108 can be provisioned with processing resources 110and/or memory resources 112 and can communicate via the networkinterface 116. The processing resources 110 and the memory resources 112provisioned to the VCIs 108 can be local and/or remote to the host 104.For example, in a software defined data center, the VCIs 108 can beprovisioned with resources that are generally available to the softwaredefined data center and not tied to any particular hardware device. Byway of example, the memory resources 112 can include volatile and/ornon-volatile memory available to the VCIs 108. The VCIs 108 can be movedto different hosts (not specifically illustrated), such that a differenthypervisor manages (e.g., executes) the VCIs 108. The host 104 can be incommunication with the LFS management operation controller 114. In someembodiments, the LFS management operation controller 114 can be deployedon a server, such as a web server.

The LFS management operation controller 114 can include computingresources (e.g., processing resources and/or memory resources in theform of hardware, circuitry, and/or logic, etc.) to perform variousoperations to alter an amount of over-provisioned space (e.g., memoryresources) available to the cluster 102 to perform memory managementoperations associated with a storage area network, such as a virtualstorage area network (vSAN). The memory management operations can, insome embodiments, include garbage collection operations and/or segmentcleaning operations that are performed during operation of the host 102.Accordingly, in some embodiments, the LFS management operationcontroller 114 can be part of a cluster controller (e.g., a vSAN clustermanager). In embodiments in which the LFS management operationcontroller 114 is part of a vSAN cluster controller, the local disks ofthe hosts 104-1 and 104-2 can act as pooled storage for the cluster 102(e.g., a datastore) that can store data corresponding to the VCIs 108-1,. . . , 108-N as objects (as opposed to files).

In some embodiments, the LFS management operation controller 114 (orcluster manager on which the LFS management operation controller 114 isdeployed) can manage multiple LFSs and overprovision memory resources112-1 and 112-2 from the hosts 104-1 and 104-2 for each LFS.Accordingly, in some embodiments, the memory resources 112-1 and 112-2can be treated as a single collective storage volume for the cluster 102that is divided up amongst the LFSs, with each LFS being part of the DOMobject space.

For example, in some embodiments, the LFS management operationcontroller 114 can determine an amount of over-provisioned computingresources assigned to a plurality of LFS objects that are allocated forperformance of memory management operations associated with a vSAN andselect a subset of LFS objects that are candidates for performance of aparticular memory management operation based on the determined amount ofover-provisioned computing resources consumed by each LFS objectexceeding a resource consumption threshold. In some embodiments, the LFSmanagement operation system can perform the particular memory managementoperation on at least one memory segment in which at least a portion ofone or more of candidate LFS objects is stored. In addition, the LFSmanagement operation controller 114 can perform the operations discussedin connection with FIGS. 2A-2C, 3, 4, and 5, herein.

As described above, by altering the amount of over-provisioned spaceavailable to perform memory management operations associated with thevSAN, as described herein, an amount of space (e.g., over-provisionedspace) available to the cluster 102 can be more efficiently utilized incomparison to approaches that maintain a fixed percentage ofover-provisioned space for performance of memory management operationsassociated with the vSAN, thereby improving the overall functioning of acomputing system such as the cluster 102.

FIGS. 2A-2C are diagrams 220 illustrating altering an amount ofover-provisioned space (e.g., computing resources, such as memoryresources) in a log-structured file system according to one or moreembodiments of the present disclosure. Each of the diagrams 220 shows aplurality of memory segments 222-1, 222-2, 222-3, 222-4, 222-5, 222-6,and 222-7 (e.g., blocks of memory, memory segments, etc.) that can beprovided as over-provisioned memory in a cluster, such as the cluster102 illustrated in FIG. 1, herein. Although shown in FIGS. 2A and 2B asfive (5) distinct memory segments 222-1, . . . , 222-5, and in FIG. 2Cas seven (7) distinct memory segments 222-1, . . . , 222-7, embodimentsare not so limited and other quantities (e.g., fewer than five orgreater than seven) of memory segments 222 are contemplated within thescope of the disclosure. As used herein, the term “memory segment”generally refers to a contiguous portion of physical memory addresseswithin a memory resource or a storage resource. A memory segment caninclude one or more memory blocks, memory sectors, memory pages, and thelike.

In FIG. 2A, each of the memory segments 222-1, . . . , 222-5 is a memorysegment allocated as over-provisioned space for a computing system.However, as described herein, at some point in time during operation ofthe computing system (e.g., a software defined data center) associatedwith the memory segments 222-1, . . . , 222-5, it may be desirable todecrease the quantity of memory segments 222-1, . . . , 222-5 (as shownin FIG. 2B) or increase the quantity of memory segments 222-1, . . . ,222-7 (as shown in FIG. 2C) provided as over-provisioned space forperformance of memory management operations.

In some embodiments, a data structure (e.g., a “segment usage table”(SUT)) can store indexing information corresponding to the physicaladdresses of the memory segments 222-1, . . . , 222-5 in which objectdata is stored. The data structure can be stored in the host 102 (e.g.,within the memory resource 110) illustrated in FIG. 1 and/or the LFSmanagement operation controller 114 illustrated in FIG. 1, among otherlocations. The data structure can include an array of entries thatinclude indexing information and can be indexed by a segment index. Thesegment index can be assigned based on a ratio of a memory segmentnumber (e.g., address location or offset) and a quantity of dataassociated with memory segment. For example, if the segment size is onehundred blocks, a fifth block would be located in a zeroth segment(since five is within the one hundred block segment size) while a twohundred and thirteenth block would be located in a second segment (since213/100=2).

As is well known in the art, entries corresponding to physical memorysegments can be mapped across an address space that corresponds tomemory spaces in which data is written or stored, or from which data isread. By unmapping entries of the address space of the data structure,it can be possible to reallocate memory segments 222-1, . . . , 222-5that were assigned as over-provisioned space in the event that lessover-provisioned space is desired, as described in connection with FIG.2B. Conversely, by remapping entries of the address space of the datastructure, it can be possible to reallocate memory segments 222-1, . . ., 222-5 that were not assigned as over-provisioned space in the eventthat more over-provisioned space is desired, as described in connectionwith FIG. 2C.

In FIG. 2B, at least one entry of the data structure has been unmappedto free up a memory segment (e.g., the memory segments 222-3) that wasallocated as over-provisioned space in FIG. 2A. An example of a SegmentUsage Table (SUT) definition below can be used, where the new “isHole”field bit is set to 1 to track which segment has been unmapped to reducethe over-provisioned space of this object so it should not be reused asa free segment accepting new objects:

struct SUT { int numLiveBlocks; int isHole; int next, prev };

After an entry in the data structure has been unmapped, for example, byexecuting the example SUT definition above, the unmapped memory segmentcan be allocated for “normal” use (e.g., not as over-provisioned space)for the computing system.

In FIG. 2C, two entries of the data structure have been remapped toincrease a quantity of memory segments (e.g., the memory segments 222-6and 222-7) allocated as over-provisioned space. For example, some memorysegments (e.g., the memory segments 222-6 and 222-7) may have beenpreviously allocated for “normal” use (e.g., not as over-provisionedspace) at some prior to determining that additional over-provisionedspace may be beneficial to the computing system. Accordingly, in FIG.2C, the two additional memory segments 222-6 and 222-7 are allocated asover-provisioned space. The “isHole” bit of SUT for the additionalmemory segments will be set to 0 so that these additional memorysegments can be reused as free segments accepting new objects.

After entries in the data structure have been re-mapped asover-provisioned space, for example, by executing the example SUTdefinition above, the re-mapped memory segment can be allocated for useas over-provisioned space for the computing system.

FIG. 3 is a diagram of a system 314 for log-structured file systemmemory management operations according to one or more embodiments of thepresent disclosure. The system 314 can include a database 352, asubsystem 354, and/or a number of engines, for example a determinationengine 356, a candidate object engine 358, and/or a management operationengine 360, and can be in communication with the database 352 via acommunication link. The system 314 can include additional or fewerengines than illustrated to perform the various functions describedherein. The system can represent program instructions and/or hardware ofa machine (e.g., the machine 462 as referenced in FIG. 4, etc.). As usedherein, an “engine” can include program instructions and/or hardware,but at least includes hardware. Hardware is a physical component of amachine that enables it to perform a function. Examples of hardware caninclude a processing resource, a memory resource, a logic gate, anapplication specific integrated circuit, a field programmable gatearray, etc.

The number of engines can include a combination of hardware and programinstructions that is configured to perform a number of functionsdescribed herein. The program instructions (e.g., software, firmware,etc.) can be stored in a memory resource (e.g., machine-readable medium)as well as hard-wired program (e.g., logic). Hard-wired programinstructions (e.g., logic) can be considered as both programinstructions and hardware.

In some embodiments, the determination engine 356 can include acombination of hardware and program instructions that is configured todetermine an amount (e.g., an aggregate amount) of over-provisionedcomputing resources assigned to a plurality of log-structured filesystem (LFS) objects that are allocated for performance of memorymanagement operations associated with a virtual storage area network(vSAN). In some embodiments, the candidate object engine 358 can includea combination of hardware and program instructions that is configured toselect a subset of LFS objects that are candidates for performance of aparticular memory management operation based on the determined amount ofover-provisioned computing resources consumed by each LFS objectexceeding a resource consumption threshold. The resource consumptionthreshold can be set based on the determined segment cleaning costsdescribed in connection with FIG. 5, herein. For example, the resourceconsumption threshold can correspond to a threshold segment cleaningcost associated with performance of memory management operations for acomputing system. The resource threshold consumption threshold can be apredetermined threshold value above which the segment cleaning cost ishigh enough that additional memory segments can be re-allocated for useas provisioned space and, below which, the segment cleaning cost is lowenough that memory segments allocated as over-provisioned space can beunmapped and re-allocated for normal use. In some embodiments, themanagement operation engine 360 can include a combination of hardwareand program instructions that is configured to perform the particularmemory management operation on at least one memory segment in which atleast a portion of one or more of the candidate LFS objects is stored.

FIG. 4 is a diagram of a machine for log-structured file system memorymanagement operations according to one or more embodiments of thepresent disclosure. The machine 462 can utilize software, hardware,firmware, and/or logic to perform a number of functions. The machine 462can be a combination of hardware and program instructions configured toperform a number of functions (e.g., actions). The hardware, forexample, can include a number of processing resources 408 and a numberof memory resources 410, such as a machine-readable medium (MRM) orother memory resources 410. The memory resources 410 can be internaland/or external to the machine 462 (e.g., the machine 462 can includeinternal memory resources and have access to external memory resources).In some embodiments, the machine 462 can be a VCI. The programinstructions (e.g., machine-readable instructions (MRI)) can includeinstructions stored on the MRM to implement a particular function (e.g.,an action such as creating a live snapshot at an end of a snapshotchain, as described herein). The set of MRI can be executable by one ormore of the processing resources 408. The memory resources 410 can becoupled to the machine 462 in a wired and/or wireless manner. Forexample, the memory resources 410 can be an internal memory, a portablememory, a portable disk, and/or a memory associated with anotherresource, e.g., enabling MRI to be transferred and/or executed across anetwork such as the Internet. As used herein, a “module” can includeprogram instructions and/or hardware, but at least includes programinstructions.

Memory resources 410 can be non-transitory and can include volatileand/or non-volatile memory. Volatile memory can include memory thatdepends upon power to store information, such as various types ofdynamic random access memory (DRAM) among others. Non-volatile memorycan include memory that does not depend upon power to store information.Examples of non-volatile memory can include solid state media such asflash memory, electrically erasable programmable read-only memory(EEPROM), phase change memory (PCM), 3D cross-point, ferroelectrictransistor random access memory (FeTRAM), ferroelectric random accessmemory (FeRAM), magneto random access memory (MRAM), Spin TransferTorque (STT)-MRAM, conductive bridging RAM (CBRAIVI), resistive randomaccess memory (RRAM), oxide based RRAM (OxRAIVI), negative-or (NOR)flash memory, magnetic memory, optical memory, NVMe devices, and/or asolid state drive (SSD), etc., as well as other types ofmachine-readable media.

The processing resources 408 can be coupled to the memory resources 410via a communication path 464. The communication path 464 can be local orremote to the machine 462. Examples of a local communication path 464can include an electronic bus internal to a machine, where the memoryresources 410 are in communication with the processing resources 408 viathe electronic bus. Examples of such electronic buses can includeIndustry Standard Architecture (ISA), Peripheral Component Interconnect(PCI), Advanced Technology Attachment (ATA), Small Computer SystemInterface (SCSI), Universal Serial Bus (USB), Peripheral ComponentInterconnect express (PCIe) among other types of electronic buses andvariants thereof. The communication path 464 can be such that the memoryresources 410 are remote from the processing resources 408, such as in anetwork connection between the memory resources 410 and the processingresources 408. That is, the communication path 464 can be a networkconnection. Examples of such a network connection can include a localarea network (LAN), wide area network (WAN), personal area network(PAN), and the Internet, among others.

As shown in FIG. 4, the MRI stored in the memory resources 410 can besegmented into a number of modules 456, 458, 460 that when executed bythe processing resources 408 can perform a number of functions. As usedherein a module includes a set of instructions included to perform aparticular task or action. The number of modules 456, 458, 460 can besub-modules of other modules. For example, the management operationmodule 460 can be a sub-module of the candidate object module 458 and/orcan be contained within a single module. Furthermore, the number ofmodules 456, 458, 460 can comprise individual modules separate anddistinct from one another. Examples are not limited to the specificmodules 456, 458, 460 illustrated in FIG. 4.

Each of the number of modules 456, 458, 460 can include programinstructions and/or a combination of hardware and program instructionsthat, when executed by a processing resource 408, can function as acorresponding engine as described with respect to FIG. 3. For example,the determination module 456 can include program instructions and/or acombination of hardware and program instructions that, when executed bya processing resource 408, can function as the determination engine 356,though embodiments of the present disclosure are not so limited.

For example, the machine 462 can include a determination module 456,which can include instructions to determine an amount ofover-provisioned computing resources assigned to a plurality oflog-structured file system (LFS) objects that are allocated forperformance of memory management operations associated with a virtualstorage area network (vSAN). The machine 462 can include a candidateobject module 458, which can include instructions to select a subset ofLFS objects that are candidates for performance of a particular memorymanagement operation based on the determined amount of over-provisionedcomputing resources consumed by each LFS object exceeding a resourceconsumption threshold. The machine 462 can include a managementoperation module 460, which can include instructions to perform theparticular memory management operation on at least one memory segment inwhich at least a portion of one or more of the candidate LFS objects isstored.

FIG. 5 is a flow diagram corresponding to a method 540 forlog-structured file system memory management operations according to oneor more embodiments of the present disclosure. The method 540 can beperformed by processing logic that can include hardware (e.g.,processing device, circuitry, dedicated logic, programmable logic,microcode, hardware of a device, integrated circuit, etc.), software(e.g., instructions run or executed on a processing device), or acombination thereof. In some embodiments, the method 540 is performed bythe LFS management operation controller 114 of FIG. 1. Although shown ina particular sequence or order, unless otherwise specified, the order ofthe processes can be modified. Thus, the illustrated embodiments shouldbe understood only as examples, and the illustrated processes can beperformed in a different order, and some processes can be performed inparallel. Additionally, one or more processes can be omitted in variousembodiments. Thus, not all processes are required in every embodiment.Other process flows are possible.

At block 542, the method 540 can include determining an aggregate amountof over-provisioned computing resources assigned to a plurality oflog-structured file system (LFS) objects, wherein the LFS objects areallocated for performance of memory management operations associatedwith a virtual storage area network (vSAN). In some embodiments, themethod 540 can include determining the amount of over-provisionedcomputing resources by determining a quantity of data read into the atleast one memory segment as part of performance of a preceding memorymanagement operation and a quantity of data written out of the at leastone memory segment as part of performance of the preceding memorymanagement operation during a particular period of time. Further, insome embodiments, the method 540 can include determining an amount of anamount of over-provisioned computing resources consumed by one or moreLFS objects by determining a quantity of data read into the at least onememory segment as part of performance of a preceding memory managementoperation and a quantity of data written out of the at least one memorysegment as part of performance of the preceding memory managementoperation during a particular period of time.

At block 544, the method 540 can include selecting a subset of LFSobjects that are candidates for performance of a particular memorymanagement operation based on an amount of over-provisioned computingresources consumed by one or more LFS objects among the plurality of LFSobjects exceeding a resource consumption threshold associated with thedetermined amount of over-provisioned computing resources assigned tothe plurality of LFS objects. In some embodiments, the method 540 caninclude selecting the subset of LFS objects by selecting LFS objectsthat exhibit greater than a threshold quantity of non-consecutive writesfor inclusion in the subset of LFS objects. Embodiments are not solimited, however, and in some embodiments, the method 540 can includeselecting the subset of LFS objects by selecting LFS objects thatexhibit write traffic characteristics greater than a threshold writetraffic frequency for inclusion in the subset of LFS objects.

In some embodiments, the subset of LFS objects can be selected based ona determined segment cleaning cost associated with each of the LFSobjects over a given period of time. In a non-limiting example in whichthe given period of time is ten (10) minutes, a quantity of memoryblocks or memory segments (e.g., the memory segments 223 illustrated inFIGS. 2A-2C, herein) that are read and/or written as part of performanceof a segment cleaning operation during the period of time can bedetermined. The quantity of memory blocks read and the quantity ofmemory blocks written during the period of time can be summed (withappropriate correction for the difference in wear cost between readoperations and write operations) to yield a total segment cleaning costfor a given period of time.

In some embodiments, the segment cleaning cost can be determined inconnection with observation of determined segment cleaning costs over agiven period of time within a sliding window over the given period oftime. Continuing with the above non-limiting example in which the givenperiod of time is ten (10) minutes, the sliding window can be maintainedover a ten (10) minute period of time that is further subdivided intoone (1) minute chunks, for example. The total segment cleaning cost overthe ten (10) minute sliding window can then be calculated by summing thesegment cleaning cost that is determined over each minute, as shown inEquation 1:

Total Segment Cleaning Cost(t)=Σ_(t-9) ^(t)Segment Cleaning Cost  (1)

where t is time in minutes and the segment cleaning cost is summed overten (10) minutes (e.g., from t−9 minutes to t minutes). In someembodiments, an oldest segment cleaning cost (e.g., a segment cleaningcost that was determined at a time greater than ten (10) minutes prior)can be allowed to “roll off” the sliding window, thereby allowing for asegment cleaning cost with a newer time (e.g., a newest segment cleaningcost) to be added to the sliding window. For example, at an eleventhminute, the sliding window can include information corresponding to thesegment cleaning costs from the second minute to the eleventh minute (asthe information corresponding to the segment cleaning cost for the firstobserved minute has “rolled off” the sliding window). Embodiments are,however, not limited to this specific, enumerated example and the totalsegment cleaning cost can be summed over greater than ten (10) minutesor less than ten (10) minutes. In addition, the constituent segmentcleaning costs can be determined for time intervals greater than one (1)minute or less than one (1) minute.

In some embodiments, LFS management operation controller 114 of FIG. 1can monitor the segment cleaning costs during the time period describedabove (e.g., within the sliding window) to determine if the segmentcleaning cost for one or more subdivisions of time in the sliding windowhas exceeded the resource consumption threshold. As described above, ifthe resource consumption threshold is exceeded for one or more of thesubdivisions of time within the sliding window, the LFS managementoperation controller can perform operations to increase the amount ofover-provisioned resources available to the computing system for garbagecollection and/or segment cleaning operations. Further, if the segmentcleaning cost is less than the resource consumption threshold is for oneor more of the subdivisions of time within the sliding window, the LFSmanagement operation controller can perform operations to decrease theamount of over-provisioned resources available to the computing systemfor garbage collection and/or segment cleaning operations.

At block 546, the method 540 can include performing the particularmemory management operation on at least one memory segment in which atleast a portion of one or more of the candidate LFS objects is stored.In some embodiments, the memory management operation can be a garbagecollection operation and/or a segment cleaning operation. As describedabove, garbage collection operations and segment cleaning operations areoperations in which data is migrated from one portion of a memoryresource to another to free up memory resources within a computingsystem.

In some embodiments, the method 540 can include increasing an amount ofover-provisioned computing resources available for performing the memorymanagement operation for the at least one memory segment in response todetermining that the at least one memory segment contains datacorresponding to a particular LFS object that is included in the subsetof LFS objects. Conversely, in some embodiments, the method 540 caninclude decreasing an amount of over-provisioned computing resourcesavailable for performing the memory management operation for the atleast one memory segment in response to determining that the at leastone memory segment contains data corresponding to an object that is notincluded in the subset of LFS objects.

In the course of determining whether to reallocate over-provisionedspace available to the LFS objects, the LFS objects can be sorted basedon the segment cleaning cost associated with each of the LFS objects.Once the LFS objects have been sorted (e.g., ranked, listed, etc.) basedon their respective segment cleaning costs, it can be determined whethereach LFS object lies above a segment cleaning cost threshold or below asegment cleaning cost threshold. For LFS objects that lie above thesegment cleaning cost threshold, the amount of over-provisioned spaceavailable for performance of a segment cleaning operation can beincreased as described in connection with FIG. 2C, herein. Conversely,for LFS objects that lie below the segment cleaning cost threshold, theamount of over-provisioned space available for performance of a segmentcleaning operation can be decreased as described in connection with FIG.2B, herein.

That is, prior to performing the memory management operation,over-provisioned space available to the subset of LFS objects can bereallocated using the adaptive memory management operation methodologiesdescribed herein. This can reduce the overall overhead consumptionassociated with performance of memory management operations incomparison to approaches in which static amounts of resources areover-provisioned. For example, as described above in connection withFIGS. 2A-2C, memory segments can be unmapped (thereby freeing upavailable over-provisioned resources that may not be needed inperformance of the memory management operation) as described inconnection with FIG. 2B and remapped (thereby increasing the amount ofover-provisioned resources available to objects in performance of memorymanagement operations) as described in connection with FIG. 2C.

The present disclosure is not limited to particular devices or methods,which may vary. The terminology used herein is for the purpose ofdescribing particular embodiments, and is not intended to be limiting.As used herein, the singular forms “a”, “an”, and “the” include singularand plural referents unless the content clearly dictates otherwise.Furthermore, the words “can” and “may” are used throughout thisapplication in a permissive sense (i.e., having the potential to, beingable to), not in a mandatory sense (i.e., must). The term “include,” andderivations thereof, mean “including, but not limited to.”

Although specific embodiments have been described above, theseembodiments are not intended to limit the scope of the presentdisclosure, even where only a single embodiment is described withrespect to a particular feature. Examples of features provided in thedisclosure are intended to be illustrative rather than restrictiveunless stated otherwise. The above description is intended to cover suchalternatives, modifications, and equivalents as would be apparent to aperson skilled in the art having the benefit of this disclosure.

The scope of the present disclosure includes any feature or combinationof features disclosed herein (either explicitly or implicitly), or anygeneralization thereof, whether or not it mitigates any or all of theproblems addressed herein. Various advantages of the present disclosurehave been described herein, but embodiments may provide some, all, ornone of such advantages, or may provide other advantages.

In the foregoing Detailed Description, some features are groupedtogether in a single embodiment for the purpose of streamlining thedisclosure. This method of disclosure is not to be interpreted asreflecting an intention that the disclosed embodiments of the presentdisclosure have to use more features than are expressly recited in eachclaim. Rather, as the following claims reflect, inventive subject matterlies in less than all features of a single disclosed embodiment. Thus,the following claims are hereby incorporated into the DetailedDescription, with each claim standing on its own as a separateembodiment.

What is claimed is:
 1. A method, comprising: determining an aggregateamount of over-provisioned computing resources assigned to a pluralityof log-structured file system (LFS) objects, wherein the LFS objects areallocated for performance of memory management operations associatedwith a virtual storage area network (vSAN); selecting a subset of LFSobjects that are candidates for performance of a particular memorymanagement operation based on an amount of over-provisioned computingresources consumed by one or more LFS objects among the plurality of LFSobjects exceeding a resource consumption threshold associated with thedetermined amount of over-provisioned computing resources assigned tothe plurality of LFS objects; and performing the particular memorymanagement operation using one or more of the candidate LFS objects. 2.The method of claim 1, further comprising determining the aggregateamount of over-provisioned computing resources or the amount ofover-provisioned computing resources consumed by the one or more LFSobjects, or both, by determining a quantity of data read into at leastone memory segment as part of performance of a preceding memorymanagement operation and a quantity of data written out of the at leastone memory segment as part of performance of the preceding memorymanagement operation during a particular period of time.
 3. The methodof claim 1, wherein the memory management operation comprises a garbagecollection operation or a segment cleaning operation, or both.
 4. Themethod of claim 1, further comprising selecting the subset of LFSobjects by selecting LFS objects that exhibit greater than a thresholdquantity of non-consecutive writes for inclusion in the subset of LFSobjects.
 5. The method of claim 1, further comprising selecting thesubset of LFS objects by selecting LFS objects that exhibit writetraffic characteristics greater than a threshold write traffic frequencyfor inclusion in the subset of LFS objects.
 6. The method of claim 1,further comprising increasing an amount of over-provisioned computingresources available for performing the memory management operation forat least one memory segment in response to determining that the at leastone memory segment contains data corresponding to a particular LFSobject that is included in the subset of LFS objects.
 7. The method ofclaim 1, further comprising decreasing an amount of over-provisionedcomputing resources available for performing the memory managementoperation for the at least one memory segment in response to determiningthat the at least one memory segment contains data corresponding to anobject that is not included in the subset of LFS objects.
 8. Anon-transitory machine-readable medium having instructions storedthereon which, when executed by a processor, cause the processor to:determine an aggregate amount of over-provisioned computing resourcesassigned to a plurality of log-structured file system (LFS) objects,wherein the LFS objects are allocated for performance of memorymanagement operations associated with a virtual storage area network(vSAN); select a subset of LFS objects that are candidates forperformance of a particular memory management operation based on anamount of over-provisioned computing resources consumed by one or moreLFS objects among the plurality of LFS objects exceeding a resourceconsumption threshold associated with the determined amount ofover-provisioned computing resources assigned to the plurality of LFSobjects; and perform the particular memory management operation usingone or more of the candidate LFS objects.
 9. The medium of claim 8,including instructions to determine the aggregate amount ofover-provisioned computing resources or the amount of over-provisionedcomputing resources consumed by the one or more LFS objects, or both, bydetermining a quantity of data read into the at least one memory segmentas part of performance of a preceding memory management operation and aquantity of data written out of the at least one memory segment as partof performance of the preceding memory management operation during aparticular period of time.
 10. The medium of claim 8, includinginstructions to perform a garbage collection operation or a segmentcleaning operation, or both, as part of performance of the particularmemory management operation.
 11. The medium of claim 8, includinginstructions to select the subset of LFS objects by selecting LFSobjects that exhibit greater than a threshold quantity ofnon-consecutive writes for inclusion in the subset of LFS objects. 12.The medium of claim 8, including instructions to select the subset ofLFS objects by selecting LFS objects that exhibit write trafficcharacteristics greater than a threshold write traffic frequency forinclusion in the subset of LFS objects.
 13. The medium of claim 8,including instructions to increase an amount of over-provisionedcomputing resources available for performing the memory managementoperation for at least one memory segment in response to determiningthat the at least one memory segment contains data corresponding to aparticular LFS object that is included in the subset of LFS objects. 14.The medium of claim 8, including instructions to decrease an amount ofover-provisioned computing resources available for performing the memorymanagement operation for the at least one memory segment in response todetermining that the at least one memory segment contains datacorresponding to an object that is not included in the subset of LFSobjects.
 15. A system, comprising: a determination engine configured todetermine an aggregate amount of over-provisioned computing resourcesassigned to a plurality of log-structured file system (LFS) objects,wherein the LFS objects are allocated for performance of memorymanagement operations associated with a virtual storage area network(vSAN); a candidate object engine configured to select a subset of LFSobjects that are candidates for performance of a particular memorymanagement operation based on an amount of over-provisioned computingresources consumed by one or more LFS objects among the plurality of LFSobjects exceeding a resource consumption threshold associated with thedetermined amount of over-provisioned computing resources assigned tothe plurality of LFS objects; and a management operation engineconfigured to perform the particular memory management operation usingone or more of the candidate LFS objects.
 16. The system of claim 15,wherein the determination engine is configured to determine the totalamount of over-provisioned computing resources or the amount ofover-provisioned computing resources consumed by the one or more LFSobjects, or both, by determining a quantity of data read into the atleast one memory segment as part of performance of a preceding memorymanagement operation and a quantity of data written out of the at leastone memory segment as part of performance of the preceding memorymanagement operation during a particular period of time.
 17. The systemof claim 15, wherein the candidate object engine is configured to selectthe subset of LFS objects by selecting LFS objects that exhibit greaterthan a threshold quantity of non-consecutive writes for inclusion in thesubset of LFS objects.
 18. The system of claim 15, wherein the candidateobject engine is configured to select the subset of LFS objects byselecting LFS objects that exhibit write traffic characteristics greaterthan a threshold write traffic frequency for inclusion in the subset ofLFS objects.
 19. The system of claim 15, wherein the managementoperation engine is configured to increase an amount of over-provisionedcomputing resources available for performing the memory managementoperation for at least one memory segment in response to determiningthat the at least one memory segment contains data corresponding to aparticular LFS object that is included in the subset of LFS objects. 20.The system of claim 15, wherein the management operation engine isconfigured to decrease an amount of over-provisioned computing resourcesavailable for performing the memory management operation for the atleast one memory segment in response to determining that the at leastone memory segment contains data corresponding to an object that is notincluded in the subset of LFS objects.